Quality assurance is often an integral part of software development. For example, quality assurance personnel may test newly-developed software, identify defects contained within the software, and determine whether the software is of high enough quality to be released to end users.
Unfortunately, conventional quality assurance tools suffer from several shortcomings. For example, it is often difficult to quantify a quality level of a software product and to compare quality levels of different software products or different versions of the same software product. Moreover, it is often difficult to objectively determine whether the certification processes followed by quality assurance personnel to identify defects within software products are efficient and effective.